package com.lwf.fatapi.service;

import com.lwf.fatapi.dto.CreateUserRequest;
import com.lwf.fatapi.entities.SysUser;
import com.mybatisflex.core.paginate.Page;

import java.util.List;

/**
 * 系统用户服务接口
 *
 * @author lwf
 */
public interface SysUserService {

    /**
     * 创建用户
     */
    boolean createUser(CreateUserRequest request);

    /**
     * 更新用户
     */
    boolean updateUser(Long id, CreateUserRequest request);

    /**
     * 删除用户
     */
    boolean deleteUser(Long id);

    /**
     * 根据ID查询用户
     */
    SysUser getUserById(Long id);

    /**
     * 根据用户名查询用户
     */
    SysUser getUserByUsername(String username);

    /**
     * 分页查询用户列表
     */
    Page<SysUser> getUserPage(int pageNo, int pageSize, String keyword);

    /**
     * 查询所有用户列表
     */
    List<SysUser> getAllUsers();

    /**
     * 设置用户角色
     */
    boolean setUserRoles(Long userId, List<Long> roleIds);

    /**
     * 重置密码
     */
    boolean resetPassword(Long id, String newPassword);

    /**
     * 修改密码
     */
    boolean changePassword(Long id, String oldPassword, String newPassword);

    /**
     * 启用/禁用用户
     */
    boolean toggleUserStatus(Long id, Integer status);
}
